#ifndef __MALLOC_H
#define __MALLOC_H
#include "stdint.h"
 
#ifndef NULL
#define NULL 0
#endif

//定义两个内存池
typedef struct
{
	uint32_t memtblsize;      //内存管理大小
	uint32_t memblksize;      //内存块大小
	uint32_t memsize;         //内存池大小
	uint16_t *memmap; 		  //内存池
	uint8_t  memrdy; 		  //
	uint8_t 	*membase;	  //内存池大小
}Mallco_dev;

void mymemset(void *s,uint8_t c,uint32_t count);	//设置内存
void mymemcpy(void *des,void *src,uint32_t n);      //内存拷贝
void my_mem_init(Mallco_dev *m_dev,uint8_t *membase,uint16_t *mem1mapbase,uint32_t mem_size,uint32_t block_size);				//内存管理块初始化
uint32_t my_mem_malloc(Mallco_dev *dev,uint32_t size);	    //内存分配（内部调用）
uint8_t my_mem_free(Mallco_dev *dev,uint32_t offset);		//释放内存（内部调用）
uint8_t my_mem_perused(Mallco_dev *dev);				    //获取内存池使用率 
////////////////////////////////////////////////////////////////////////////////
//外部使用函数
void myfree(Mallco_dev *dev,void *ptr);  			    //释放内存
void *mymalloc(Mallco_dev *dev,uint32_t size);			//申请内存
void *myrealloc(Mallco_dev *dev,void *ptr,uint32_t size);//重新分配内存
#endif
